筆者想要在網路上實在很難找到好用又齊全的PySide2教學大全,那乾脆自己做一份自己想要的大補帖出來。不然找到的不是不全,就是以殘體字為主的半殘型態,很難有參考價值。
先看效果
作法
(取消)勾選checkbox
Source Code (上)
from PySide2 import QtGui, QtCore
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
....
....
self.ui.chk_autoRes.stateChanged.connect(self.chkAutoRes)
self.ui.chk_iotr.stateChanged.connect(self.chkTr)
....
....
Source Code (下)
def chkTr(self, state):
if state == QtCore.Qt.Checked:
self.ui.label_translate.setStyleSheet("background-color: aqua")
self.ui.label_translate.setText(" Translate")
self.ui.grb_translate.setEnabled(True)
tProfiles = self.fn.listdir(".\\config")
if not transProfiles is None:
for idx in range(len(tProfiles)):
if "t_" in transProfiles[idx]:
self.ui.cmb_tProfile.addItem(tProfiles[idx][6:-5])
else:
self.ui.label_tlate.setStyleSheet("")
self.ui.label_tlate.setText("")
self.ui.cmb_tProfile.clear()
self.ui.grb_tlate.setEnabled(False)
self.ui.cmb_tlate.setCurrentText("")
def chkAutoRes(self, state):
if state == QtCore.Qt.Checked:
self.ui.grb_autoRes.setEnabled(True)
f_UsrCMDSet = self.fn.listdir(".\\config")
if not f_UsrCMDSet is None:
for idx in range(len(f_UsrCMDSet)):
if "f_" in f_UsrCMDSet[idx]:
self.ui.cmb_fUserConfig.addItem(f_UsrCMDSet[idx][5:-5])
else:
self.ui.grb_autoRes.setEnabled(False)
self.ui.cmb_f_UserConfig.clear()
何時需要使用Grid 去做排版? Grid 是一定要用的嗎?
[Ans] 很多Python GUI程式相關的教學中都會特別提到Grid 這部分一定要放在最下面那層才可以,但經由筆者研究pyside2 後發現,除非想要做到不同解析度或程式可以藉由拖拉的方式做放大縮小功能,不然是可以不需要使用Grid 進行Layout相關的設計
要如何防止在Grid 上面設計時,每次使用的元件外觀大小都會變形的問題及如何快速把沒有Grid Layout的UI版面加入這個樣式設計?
[Ans]
效果如下:
作法:
效果如下:
Source Code
if state == QtCore.Qt.Checked:
self.ui.label_autoRes.setStyleSheet("background-color: aqua")
self.ui.label_autoRes.setText("Auto Res")
else:
self.ui.label_autoRes.setStyleSheet("")
self.ui.label_autoRes.setText("")
StyleSheet實際上就是一個UI文件中的樣式設計語法,其有非常多設定,但其實常用的就那幾種而已 例如: 前(後)景顏色,邊框 ....
這邊只有介紹顏色的簡單應用
參考資料